package collection;

import java.util.Arrays;
import java.util.List;

/**
 * 数组转集合
 * 数组的工具类java.util.Arrays提供了一个静态方法：aslist()
 * 该方法可以将数组转为集合
 * 注意：只能转为ArrayList集合
 * */
public class ArrayToListDemo {
    public static void main(String[] args) {
        String[] array = {"one","two","three","four","five"};
        System.out.println("数组："+ Arrays.toString(array)); //将数组的元素转为字符串并输出

        List<String> list =Arrays.asList(array);
        System.out.println("集合："+list); //[one, two, three, four, five]
        array[2] = "six"; //改变数组元素
        /**
         * 数组和集合转换时，指向到的是同一个对象
         * aslist()会返回内部类ArrayList,ArrayList内部是直接引用到给定数组的地址*/
        System.out.println("集合："+list); //[one, two, six, four, five]
        //list.add("three");
        //如果需要增加删除元素，可以另外创建一个集合，然后这个集合中包含list集合的所有元素
        /**
         * 报错：
         * 原因分析：通过转换后的集合添加/删除元素，相当于要往数组中增加/删除元素
         *         而数组长度是固定的，不会对同一个对象扩容和缩容，因此会发生不支持操作异常*/












        //任务：将以下字符串转为对应类型集合
        Integer[] ig = {1,2,3,4,5};
        List<Integer> list1 =Arrays.asList(ig);
        System.out.println("集合："+list1);

        //任务：将以下数组转为对应数据类型集合
        int[] i = {1,2,3,4,5};
        Integer[] i1 =Arrays.stream(i).boxed().toArray(Integer[]::new);
        List<Integer> i2 = Arrays.asList(i1);
        System.out.println("转换后集合："+i2);
        //1.将基本类型数组转为对应包装类数组。2.将包装类数组转集合
    }
}
